"""
用户服务类. 将一个服务, 封装成一个类.
服务名: UserService            类名: UserService
方法名: findByUsername         方法名: find_by_username


"""
import json

from api.base_service import BaseService


class UserService(BaseService):

    def __init__(self):
        super().__init__()
        # 有同学可能有疑问, 这个服务就一个方法, 干嘛还封装成属性呢?
        # 写代码不能只考虑现在, 要考虑到方法的扩展. 如果未来方法了多了呢? 还是得抽取, 不如提前考虑好
        self.service_name = "UserService"

    # 根据用户名查询用户信息 User findByUsername(String username)
    def find_by_username(self, username):
        resp = self.client.invoke(self.service_name, "findByUsername", username)
        # 成功 "{}" 字典格式的字符串信息  "admin"
        # 失败 "null" 用户不存在  "123456"
        # 失败 "Failed" 数据类型不对  123456
        if resp == "null" or resp == "Failed":
            return None
        else:
            return json.loads(resp)


if __name__ == '__main__':
    us = UserService()
    res = us.find_by_username("admin")
    print("响应类型", type(res))
    print("响应数据", res)
